package Merlion.util.state;

import Merlion.MRP.entity.PlannedMonthlyDemandEntity;
import Merlion.SCM.entity.ProductEntity;
import java.io.Serializable;
import java.util.ArrayList;

public class SalesRecordState implements Serializable {

    private String id; //prodId-MMYYYY
    private Integer yearInt;
    private Integer monthInt;
    private int previousSales;
    private int previousPromotion;
    private int previousBase;
    private int growth;
    private int growthRate;
    private int actualSales;
    private int actualPromotion;
    private int actualBase;
    private int projectedSales;
    private int projectedPromotion;
    private int projectedBase;
    private int annualSales;
    private int annualPromotion;
    private int annualBase;
    private ProductEntity product;
    private PlannedMonthlyDemandEntity plannedMonthlyDemand;
    private boolean converted;
    private boolean forecasted;
    private ArrayList<Object[]> msrs;

    public SalesRecordState() {
    }

    public void createSalesForecastState(String id, Integer yearInt, Integer monthInt, int previousSales, int previousPromotion, int previousBase, int growth, int projectedSales, int projectedPromotion, int projectedBase) {
        this.id = id;
        this.yearInt = yearInt;
        this.monthInt = monthInt;
        this.previousSales = previousSales;
        this.previousPromotion = previousPromotion;
        this.previousBase = previousBase;
        this.growth = growth;
        this.projectedSales = projectedSales;
        this.projectedPromotion = projectedPromotion;
        this.projectedBase = projectedBase;
    }

    public SalesRecordState(String id, Integer yearInt, Integer monthInt, int actualSales, int actualPromotion, int actualBase, int projectedSales, int projectedPromotion, int projectedBase, ProductEntity product, PlannedMonthlyDemandEntity plannedMonthlyDemand, boolean converted) {
        this.id = id;
        this.yearInt = yearInt;
        this.monthInt = monthInt;
        this.actualSales = actualSales;
        this.actualPromotion = actualPromotion;
        this.actualBase = actualBase;
        this.projectedSales = projectedSales;
        this.projectedPromotion = projectedPromotion;
        this.projectedBase = projectedBase;
        this.product = product;
        this.plannedMonthlyDemand = plannedMonthlyDemand;
        this.converted = converted;
    }

    public SalesRecordState(Integer yearInt, int annualSales, int annualPromotion, int annualBase, ArrayList<Object[]> msrs) {
        this.yearInt = yearInt;
        this.annualSales = annualSales;
        this.annualPromotion = annualPromotion;
        this.annualBase = annualBase;
        this.msrs = msrs;
    }

    public boolean isForecasted() {
        return forecasted;
    }

    public void setForecasted(boolean forecasted) {
        this.forecasted = forecasted;
    }

    public int getGrowthRate() {
        return growthRate;
    }

    public void setGrowthRate(int growthRate) {
        this.growthRate = growthRate;
    }
    
    public int getGrowth() {
        return growth;
    }

    public void setGrowth(int growth) {
        this.growth = growth;
    }

    public int getPreviousBase() {
        return previousBase;
    }

    public void setPreviousBase(int previousBase) {
        this.previousBase = previousBase;
    }

    public int getPreviousPromotion() {
        return previousPromotion;
    }

    public void setPreviousPromotion(int previousPromotion) {
        this.previousPromotion = previousPromotion;
    }

    public int getPreviousSales() {
        return previousSales;
    }

    public void setPreviousSales(int previousSales) {
        this.previousSales = previousSales;
    }

    public int getActualBase() {
        return actualBase;
    }

    public void setActualBase(int actualBase) {
        this.actualBase = actualBase;
    }

    public int getActualPromotion() {
        return actualPromotion;
    }

    public void setActualPromotion(int actualPromotion) {
        this.actualPromotion = actualPromotion;
    }

    public int getActualSales() {
        return actualSales;
    }

    public void setActualSales(int actualSales) {
        this.actualSales = actualSales;
    }

    public int getAnnualBase() {
        return annualBase;
    }

    public void setAnnualBase(int annualBase) {
        this.annualBase = annualBase;
    }

    public int getAnnualPromotion() {
        return annualPromotion;
    }

    public void setAnnualPromotion(int annualPromotion) {
        this.annualPromotion = annualPromotion;
    }

    public int getAnnualSales() {
        return annualSales;
    }

    public void setAnnualSales(int annualSales) {
        this.annualSales = annualSales;
    }

    public ArrayList<Object[]> getMsrs() {
        return msrs;
    }

    public void setMsrs(ArrayList<Object[]> msrs) {
        this.msrs = msrs;
    }

    public boolean isConverted() {
        return converted;
    }

    public void setConverted(boolean converted) {
        this.converted = converted;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Integer getMonthInt() {
        return monthInt;
    }

    public void setMonthInt(Integer monthInt) {
        this.monthInt = monthInt;
    }

    public PlannedMonthlyDemandEntity getPlannedMonthlyDemand() {
        return plannedMonthlyDemand;
    }

    public void setPlannedMonthlyDemand(PlannedMonthlyDemandEntity plannedMonthlyDemand) {
        this.plannedMonthlyDemand = plannedMonthlyDemand;
    }

    public ProductEntity getProduct() {
        return product;
    }

    public void setProduct(ProductEntity product) {
        this.product = product;
    }

    public int getProjectedBase() {
        return projectedBase;
    }

    public void setProjectedBase(int projectedBase) {
        this.projectedBase = projectedBase;
    }

    public int getProjectedPromotion() {
        return projectedPromotion;
    }

    public void setProjectedPromotion(int projectedPromotion) {
        this.projectedPromotion = projectedPromotion;
    }

    public int getProjectedSales() {
        return projectedSales;
    }

    public void setProjectedSales(int projectedSales) {
        this.projectedSales = projectedSales;
    }

    public Integer getYearInt() {
        return yearInt;
    }

    public void setYearInt(Integer yearInt) {
        this.yearInt = yearInt;
    }
}
